package com.xique.park.bean.domain;

import com.baomidou.mybatisplus.annotation.IdType;
import com.baomidou.mybatisplus.annotation.TableField;
import com.baomidou.mybatisplus.annotation.TableId;
import com.fasterxml.jackson.annotation.JsonFormat;
import com.xique.common.core.annotation.Excel;
import lombok.Data;

import java.util.Date;
import java.util.List;

/**
 * 在场车辆对象 t_park_on
 *
 * @author xique
 * @date 2021-12-09
 */
@Data
public class ParkOn {

    private static final long serialVersionUID = 1L;

    /**
     * 自动增量
     */
    @TableId(type = IdType.AUTO)
    private Long id;

    /**
     * 停车场ID
     */
    private Long parkId;

    /**
     * 车库ID
     */
    private Long garageId;

    /**
     * 入场表的ID
     */
    private Long inId;

    /**
     * 车牌号
     */
    @Excel(name = "车牌(必填)")
    private String plate;

    /**
     * 备用车牌
     */
    private String plateBak;

    /**
     * 车型
     */
    private String carType;

    /**
     * 车辆计费id，不需要计费则为null
     */
    private Long chargeId;

    /**
     * 进场通道ID
     */
    private Long inLane;

    /**
     * 进场时间
     */
    @JsonFormat(pattern = "yyyy-MM-dd HH:mm:ss")
    @Excel(name = "进场时间(必填)", width = 30, dateFormat = "yyyy-MM-dd HH:mm:ss", prompt = "日期格式：yyyy-MM-dd HH:mm:ss")
    private Date inTime;

    /**
     * 进场图片
     */
    private String inPic;

    /**
     * 入场备注
     */
    @Excel(name = "入场备注(非必填)")
    private String inRemark;

    /**
     * 入场状态
     */
    private Integer inStatus;

    /**
     * 车牌类型
     */
    @Excel(name = "车牌类型(必选)", readConverterExp = "1=蓝牌车,3=黄牌车,13=教练车,19=绿牌小车,20=绿牌大车",
            combo = {"蓝牌车", "黄牌车", "教练车", "绿牌小车", "绿牌大车"})
    private Long plateType;

    /**
     * 车颜色
     */
    private Long carColor;

    /**
     * 车标
     */
    private String carLogo;

    /**
     * 识别分值
     */
    private Long plateScore;

    /**
     * 是否更新过（0-否 1-是）
     */
    private String isUpdate;

    /**
     * 车辆管理类型id
     */
    private Long carMngtypeId;

    /**
     * 锁车状态（1-锁车 2-未锁车）
     */
    private String lockStatus;

    /**
     * 创建人
     */
    private Long createUser;

    /**
     * 修改人
     */
    private Long updateUser;

    /**
     * 多位多车是否超过车位数需要收费
     */
    private String isMultFee;

    /**
     * 停车流水, 标识具体某次停车事件, 需保证该停车场下唯一.
     */
    private String parkingSerial;

    /**
     * 出场时间
     */
    @JsonFormat(pattern = "yyyy-MM-dd HH:mm:ss")
    private Date outTime;

    /**
     * 车辆出场状态：1、未出场；2、出场
     */
    private Integer outStatus;

    /**
     * 创建时间
     */
    @JsonFormat(pattern = "yyyy-MM-dd HH:mm:ss")
    private Date createTime;

    /**
     * 更新时间
     */
    @JsonFormat(pattern = "yyyy-MM-dd HH:mm:ss")
    private Date updateTime;

    /**
     * 计入车位统计的入场状态
     */
    @TableField(exist = false)
    private String countInStatus;

    /**
     * 管理类型字符串，用逗号分割
     */
    @TableField(exist = false)
    private String mngtypes;

    /**
     * 多个车牌，用于查询多个车牌在场记录
     */
    @TableField(exist = false)
    private List<String> plates;

    /**
     * 是否在场
     */
    @TableField(exist = false)
    private String isOn;

    /**
     * 出场通道名称
     */
    @TableField(exist = false)
    private String outLaneName;

    /**
     * 出场图片
     */
    @TableField(exist = false)
    private String outPic;

    @TableField(exist = false)
    private String outStatusLabel;

    /**
     * 管理类型ID
     */
    @TableField(exist = false)
    private Long mngTypeId;

    @TableField(exist = false)
    private String mngTypeName;

    @JsonFormat(pattern = "yyyy-MM-dd HH:mm:ss")
    @TableField(exist = false)
    private Date inTimeBegin;

    @JsonFormat(pattern = "yyyy-MM-dd HH:mm:ss")
    @TableField(exist = false)
    private Date inTimeEnd;

    /**
     * 更新人账号
     */
    @TableField(exist = false)
    private String updateUserName;

    @TableField(exist = false)
    private String carTypeLabel;

    @TableField(exist = false)
    private String laneName;

    /**
     * 进场小图片
     */
    @TableField(exist = false)
    private String inPicSm;

    /**
     * 1-按临时车计费 2-按固定车计费3-储值车计费
     */
    @TableField(exist = false)
    private Long carProperty;

    /**
     * 入场方式
     */
    @TableField(exist = false)
    private String inType;

    /**
     * 车辆管理大类
     */
    @TableField(exist = false)
    private String mngType;

    /**
     * 入场状态
     */
    @TableField(exist = false)
    private String inStatusLabel;

    /* 以下字段前端显示用 */
    /**
     * 车位号
     */
    @TableField(exist = false)
    private String seatNo;

    /**
     * 车库名称。导入在场记录使用
     */
    @TableField(exist = false)
    private String garageName;

    /**
     * 入场通道
     */
    @TableField(exist = false)
    private String inLaneName;

}
